package com.aurora.jzoffer;

/**
 * @author Aurora
 * createTime 2022.12.01 16:57:11
 * @className DuplicateNumber.java
 */
public class JZ3DuplicateNumber {
    /**
     * 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的，但不知道有几个数字是重复的。也不知道每个数字重复几次。
     * 请找出数组中任意一个重复的数字。
     * 例如，如果输入长度为7的数组[2,3,1,0,2,5,3]，那么对应的输出是2或者3。存在不合法的输入的话输出-1
     * */
    public int solution1(int[] numbers){
        int length = numbers.length;
        if(length <= 0)return -1;
        int[] countNum = new int[length];
        for(int i=0; i<length; ++i){
            if(numbers[i] >= length) return -1;//规定数组中的元素为0~n-1   n为数组长度
            countNum[numbers[i]] += 1;
            if(countNum[numbers[i]] >1) return numbers[i];
        }
        return numbers[0];//如果都只出现了一次则返回第一个值
    }
    //其他解法：使用set集合或者进行排序
}
